package com.example.fileuploaddownload.service;

import com.example.fileuploaddownload.entity.FileChunk;

import java.util.List;

/**
 * 文件分片服务接口
 * 定义文件分片管理的业务逻辑方法
 */
public interface FileChunkService {

    /**
     * 保存或更新文件分片信息
     * @param fileChunk 文件分片实体
     * @return 是否保存成功
     */
    boolean saveChunk(FileChunk fileChunk);

    /**
     * 根据标识符查询已上传的分片索引
     * @param identifier 文件标识符
     * @return 已上传的分片索引数组
     */
    int[] getUploadedChunkIndexes(String identifier);

    /**
     * 根据标识符删除所有相关分片
     * @param identifier 文件标识符
     * @return 删除的记录数
     */
    int deleteByIdentifier(String identifier);

    /**
     * 根据文件ID删除所有相关分片
     * @param fileId 文件ID
     * @return 删除的记录数
     */
    int deleteByFileId(Long fileId);

    /**
     * 根据标识符和分片索引查询分片
     * @param identifier 文件标识符
     * @param chunkIndex 分片索引
     * @return 文件分片实体
     */
    FileChunk getChunkByIdentifierAndIndex(String identifier, Integer chunkIndex);
}